TÉCNICAS
ESPECIALES

“Entender un lenguaje significa dominar una técnica” (Wittgenstein)



Conversión de secuencia a conjunto y viceversa

Conversion de la secuencia s en conjunto: {s↓}

Conversion del conjunto c en secuencia: ( c↓ )

Ejemplos:
  1. (s = (a b c))
    {s↓} // ev. {a b c}


  2. (c = {a b c})
    ( c↓ ) // ev. (a b c)

Acceso a las partes entera y decimal de un número

Ejemplos:
  1. (r = 123.456) // número positivo equivalente. a (123 . 456)
    r\1 // ev. 123 (parte entera)
    r\3 // ev. 456 (parte decimal)


  2. (r = −123.456) // número equivalente a (− (123 . 456))
    r\2\1 // ev. 123 (parte entera)
    r\2\3 // ev. 456 (parte decimal)

Acceso al contenido de un texto

Aunque un texto se autoevalúa siempre, es posible acceder a su contenido, como secuencia que es, incluso cambiarlo.

Hay que tener en cuenta que las dobles comillas actuán como paréntesis, pero previniendo contra la evaluación de sus componentes.

Ejemplo:
Eliminación de componentes repetidos de una secuencia

El proceso es el siguiente: La expresión es: ( {x↓}↓ )

Ejemplo:
Hiperaccesos jerárquicos

Son accesos jerárquicos con un número variable de niveles. Se realizan mediante la expresión

(x ☆n) o bien (x ↑star;n)

siendo n un número entero igual o mayor que cero.

Ejemplos:
  1. (x = (a (b (c d))))
    ⟨( v(n) = (x ↓☆n) )⟩
    v(0) // ev. (a (b (c d)))
    v(1) // ev. a (b (c d))
    v(2) // ev. b (c d)
    v(3) // ev. c d
    v(4) // ev. c d


  2. (x = (a*b + a*c + b*c))
    ⟨( v(n) = (x ↓☆n) )⟩
    v(0) // ev. (a*b + a*c + b*c)
    v(1) // ev. a*b + a*c + b*c
    v(2) // ev. a * b a * c b * c
    v(3) // ev. a * b a * c b * c

Distribución de repeticiones

Corresponde a las expresiones en las que se distribuye ★n entre los componentes de una expresión. Ejemplos:
  1. [[a b c]★2] // rep. a★2 b★2 c★2 rep. a a b b c c

  2. [[a b c]★⌊1…3⌋] // rep. a★1 b★2 c★3 rep. a b b c c c

  3. [[a b]★[1 2]] //rep. a★1 a★2 b★1 b★2 rep. a a a b b b

Sustitución de operadores

En una expresión es posible realizar sustituciones de expresiones en general y, por lo tanto, también de operadores. Ejemplos:
  1. ((a+b+c)/(+° = *°) // ev. a*b*c
  2. (1/5)/(/° = …°) // ev. 1…5 rep. 12345
  3. (x/3)/(/° = =°) // ev. x=3

Inserción

He aquí algunos ejemplos ilustrativos de inserción de un elemento en una secuencia.
  1. (x = (a b c d))
    x = x/(b = (b u)↓) // inserción del elemento u tras el elemento b
    x // ev. (a b u c d)


  2. (x = (a b c d b))
    x = x/(b = (b u)↓) // inserción del elemento u tras los elementos b
    x // ev. (a b u c d b u)


  3. (x = (a b c d))
    x = x/(b = (b u v)↓) // inserción de los elementos u y v tras el elem. b // ev. (a b u v c d)


  4. (x = (a b c d))
    x = (u x↓) // inserción del elemento u delante del primer elemento de x
    x // ev. (u a b c d)


  5. (x = (a b c d))
    x = (x↓ u) // inserción del elemento u detrás del último elemento de x
    x // ev. (a b c d u)

Rangos y distribución

Se puede simplificar la especificación de expresiones con rangos mediante una operación de distribución.

Ejemplos:
  1. (1…3 1…9 1…5) eq. ([1…[3 9 5]]) Esta es una secuencia de tres rangos, que comparten el mismo elemento inicial.

  2. (3…1 4…1 5…1) eq. ([[3 4 5]…1]) eq. ([[3…5]…1])

    En este caso los tres rangos comparten el elemento final, formando los elementos iniciales otro rango.

  3. (1…3 1…4 1…5) eq. ([1…[3 4 5]]) eq. ([1…[3…5]]) Esta es una secuencia de tres rangos que comparten el mismo elemento inicial y cuyos elementos finales forman, a su vez, otro rango.

Rangos de variables

La especificación de un rango de variables x1 … xn, se puede realizar de la forma siguiente:
x1…xn, puesto que (x1+1 = x2), (x2+1 = x3), etc.

Ejemplo:

((x1 = ab) (x2 = 12) (x3 = 44) (x4 = cd))
( ( x1…x4 ) ) // rep. (ab 12 44 cd)



Operadores como argumentos

Los operadores pueden ser argumentos de expresiones genéricas. Ejemplos:
  1. ⟨( r(p) = (1p5) )⟩
    r(…) // rep. (1…5) rep. 1 2 3 4 5
    r(999) // ev. (1 999 5)


  2. ⟨( z(p) = 1p2p3p4p5 )⟩
    z(θ) // ev. 12345
    r(+) // ev. 1+2+3+4+5 ev. 15
    r(44) // ev. (1 44 2 44 3 44 4 44 5)

Cómo saber si una expresión forma parte de otra

Si queremos saber si la expresión x contiene a otra y:

(“x contiene a y” ←' (x/(y=θ) = (x/(y=θ)°) → “x no contiene a y”)

Por ejemplo, si x=(a b c):

x/(b=θ) // ev. (a c) ≠ x (b está contenido en x)
x/(r=θ) // (se autoevalúa, r no está contenido en x)



Variables parametrizadas vs. secuencias

Una alternativa a las secuencias es utilizar variables parametrizadas. Por ejemplo, la secuencia x=(a b c d) se podría sustituir por Para hacer referencia a la secuencia completa habría que hacer Esta técnica tiene la ventaja de que el argumento puede ser de cualquier tipo y no solo numérico.